import Vue from "vue";
import App from "./App.vue";
import router from "./router";
import store from "./store";
import ElementUI from "element-ui";
import "element-ui/lib/theme-chalk/index.css";
import "./assets/css/common.css"
// Vue.config.productionTip = false;
import qfSubMenu from "qf-sub-menu" //引入我们的组件
import "@/assets/css/el-reset.css"
//进度条
import nprogress from "nprogress"
import 'nprogress/nprogress.css'
Vue.use(qfSubMenu)
//路由守卫

router.beforeEach((to, from, next) => {
  //把进度条打开
  nprogress.start()
  // console.log('to', to)
  // console.log('from', from)
  // console.log('next', next)
  //1.判断本地存储中是否有token,如果有就放行,如果没有那就让他再重新跳转到登入页
  let token = localStorage.getItem('myx-token');
  if (token) {
    if (store.state.userMenu.length === 0) {
      //用户的路由信息(菜单信息)没有了,需要重新发起请求
      store.dispatch('FETCH_MENULIST')
        .then(() => {
          //重新激活动态添加的路由,replace:true 不产生历史记录
          next({ ...to, replace: true })
        })
    } else {
      next()
    }
  } else {
    //2.用户没有登入,不能访问登入页面以外的的页面

    //如果用户访问的路径是login,那么需要放行
    if (to.path === "/login") {
      //刷新页面,刷新页面的目的是为了去掉动态添加的路由
      next()

    } else {
      //如果不是login就拦截,并且跳转到login页
      next({ path: "/login" })

    }

  }

})

//全局后置钩子 afterEach中停止进度条

router.afterEach((to,next)=>{ //已经进入页面了
  //停止进度条
  nprogress.done()
})




//引入公共样式
import "./assets/css/common.css"
Vue.use(ElementUI);
new Vue({
  router,
  store,
  render: (h) => h(App),
}).$mount("#app");


